var WidthPropertion = device.width / 1080
var HeightPropertion = device.height / 2340
//识图查找领阳光的任务界面
function RecieveSunshine() {
    while (true) {
        sleep(500)
        images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
        var img = images.read("./res/z阳光芭芭农场/界面.jpg");
        var temp = images.read("./res/z阳光芭芭农场/领阳光.jpg");
        var p = images.findImage(img, temp)
        // 如果存在立即去收的按钮则点击
        if (p) {
            if (text("立即去收").exists()) {
                text("立即去收").click();
                sleep(500);
            };
            click(535, 1930);//解锁新农场后随便点一下消掉提示
            sleep(500);//休眠0.5秒
            press(p.x, p.y, 300);
            break;
        }
    }
}
//浏览任务
function BrowseMission() {
    sleep(500);
    click(535, 1930);//解锁新农场后随便点一下消掉提示
    var uicollection = className("android.widget.Button").find();
    if (uicollection.nonEmpty()) {
        uicollection.each(function (uiobj) {
            if (uiobj.text() == "去浏览") {
                uiobj.click();
                sleep(2000)
                if (className("android.view.View").text("等倒计时结束再进行浏览才会有阳光喔").exists()) {
                    toastLog("这轮浏览任务已经完成\n请等待下一轮")
                    back();
                }
                else {
                    toastLog("开始浏览");
                    sleep(15000);
                    back();
                }
            }
            else if (uiobj.text() == "再看看") {
                toastLog("浏览任务已完成");
                sleep(1000)
                images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
                var img = images.read("./res/z阳光芭芭农场/界面.jpg");
                var temp = images.read("./res/z阳光芭芭农场/任务叉.jpg");
                var p = images.findImage(img, temp);
                if (p) {
                    press(p.x, p.y, 300);
                }
            }
        });
        ExitMission(0);
    }
}
function ExitMission(a) {
    sleep(1000)
    click(535, 1930);//解锁新农场后随便点一下消掉提示
    images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
    var img = images.read("./res/z阳光芭芭农场/界面.jpg");
    var temp = images.read("./res/z阳光芭芭农场/任务叉.jpg");
    var p = images.findImage(img, temp);
    if (p && a == 0) {
        press(p.x, p.y, 300);
        toastLog("无浏览任务退出任务栏");
    }
    else {
        press(p.x, p.y, 300);
        toastLog("无宝箱任务退出任务栏");
    }
}
//完成寻找宝箱的任务
function ShopMission() {
    sleep(500);
    var uicollection = className("android.widget.Button").find();
    //遍历按钮集合，找到去进店
    if (uicollection.nonEmpty()) {
        uicollection.each(function (uiobj) {
            if (uiobj.text() == "去进店") {
                uiobj.click();
                rect = text("去进店").findOne().bounds();
                press(rect.centerX(), rect.centerY(), 500);
                sleep(2000);
                for (i = 0; i < 60; i++) {
                    if (i != 0) {
                        gesture(1000, [750, 1500], [750, 500]);
                    }
                    sleep(2000);
                    toastLog("查找宝箱");
                    images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
                    var img = images.read("./res/z阳光芭芭农场/界面.jpg");
                    var temp = images.read("./res/z阳光芭芭农场/立即打开.jpg");
                    //识图查找立即打开的按钮
                    var p = images.findImage(img, temp);
                    if (p) {
                        press(p.x + temp.getWidth() / 2, p.y + temp.getHeight() / 2, 400);
                        sleep(1000);
                        toastLog("找到宝箱并打开了");
                        back();
                        break;
                    }
                }
                if (i == 29) {
                    back();
                    sleep(1000);
                    toastLog("未找到宝箱");
                }
            }
        });
    }
}
//新版浏览函数
function BrowseTask() {
    sleep(4000);
    click(535, 1930);//解锁新农场后随便点一下消掉提示
    className("android.widget.Button").text("去完成").findOne()
    if (className("android.widget.Button").text("去浏览").exists()) {
        press(className("android.widget.Button").text("去浏览").findOne().bounds().centerX(), className("android.widget.Button").text("去浏览").findOne().bounds().centerY(), 30000);
        sleep(2000)
        if (className("android.view.View").text("等倒计时结束再进行浏览才会有阳光喔").exists()) {
            toastLog("这轮浏览任务已经完成\n请等待下一轮")
            back();
        }
        else {
            toastLog("开始浏览");
            sleep(15000);
            back();
        }
    }
    else if (className("android.widget.Button").text("再看看").exists()) {
        toastLog("浏览任务已完成");
        sleep(1000)
        images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
        var img = images.read("./res/z阳光芭芭农场/界面.jpg");
        var temp = images.read("./res/z阳光芭芭农场/任务叉.jpg");
        var p = images.findImage(img, temp);
        if (p) {
            press(p.x, p.y, 300);
        }
    }
}
//点击屏幕收取阳光，点直接写坐标不好，以后会用设备分辨率比例
function Harvest() {
    sleep(1000);
    click(535, 1930);//解锁新农场后随便点一下消掉提示
    images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
    var img = images.read("./res/z阳光芭芭农场/界面.jpg");
    var temp = images.read("./res/z阳光芭芭农场/任务叉.jpg");
    var p = images.findImage(img, temp);
    if (p) {
        press(p.x, p.y, 300);
    }
    sleep(500);
    for (i = 0; i < 18; i++) {
        press(572 * WidthPropertion, (560 + 50 * i) * HeightPropertion, 50);
        sleep(50);
    }
    for (i = 0; i < 12; i++) {
        press(380 * WidthPropertion, (760 + 50 * i) * HeightPropertion, 50);
        sleep(50);
    }
    for (i = 0; i < 12; i++) {
        press(775 * WidthPropertion, (760 + 50 * i) * HeightPropertion, 50);
        sleep(50);
    }
    press(975 * WidthPropertion, 920 * HeightPropertion, 50);
    press(180 * WidthPropertion, 905 * HeightPropertion, 50);
}
//派出蜜蜂偷阳光
function Stealing() {
    click(535, 1930);//解锁新农场后随便点一下消掉提示
    images.captureScreen("./res/z阳光芭芭农场/界面.jpg");
    var img = images.read("./res/z阳光芭芭农场/界面.jpg");
    var temp = images.read("./res/z阳光芭芭农场/采阳光.jpg");
    p = images.findImage(img, temp);
    // 识图找采阳光的按钮并点击
    if (p) {
        press(p.x, p.y, 300);
        sleep(1000);//休眠一秒等待页面加载
        action = 25;//最大循环次数
        while (true) {
            action--;
            collection = text("去采阳光").find();
            print(collection.empty())
            // 采完退出，识图找×并点击
            if (collection.empty() || textContains("已全部前往采集").exists() || action == 0) {
                var img = images.read("./res/z阳光芭芭农场/test.jpg");
                var temp = images.read("./res/z阳光芭芭农场/cross.jpg");
                p = images.findImage(img, temp);
                if (p) {
                    press(p.x + temp.getWidth() * 14 / 15, p.y + temp.getHeight() * 1 / 4, 400)
                };
                toastLog("已全部前往采集");
                break;
            }
            else if (collection.nonEmpty()) {
                collection.get(random(0, collection.size() - 1)).click();
                sleep(4000);//休眠四秒等待页面加载
                //如果立刻采集的按钮存在
                if (text("立刻采集").exists()) {
                    toastLog("准备偷阳光")
                    text("立刻采集").click();
                    toastLog("派出一只蜜蜂");
                    back();
                    sleep(2000);
                    text("去采阳光").findOne(2000)//阻塞函数，确认页面已加载
                }
                else {
                    toastLog("不能立刻采集");
                    back();
                    sleep(2000);
                    text("去采阳光").findOne(2000)//阻塞函数，确认页面已加载
                }
            }
        }
    }
}
//检测是否开启无障碍服务
auto.waitFor()
//多线程点击获取截图权限的立即开始按钮
threads.start(function () {
    text("立即开始").findOne().click();
});
images.requestScreenCapture();//向系统省去截图权限
auto.waitFor();//判断是否启动无障碍服务
// 进入淘宝的芭芭农场
app.launchApp("手机淘宝");
desc("芭芭农场").click();
RecieveSunshine();
BrowseMission();
RecieveSunshine();
while (true) {
    sleep(1500)
    if (text("已完成").exists()) {
        ExitMission(1);
        toastLog("宝箱已经全部找完");
        break;
    }
    ShopMission();
};
Harvest();
//toastLog("重复点击防止漏掉升级产生的阳光");
//Harvest();
Stealing();
//一直按退出键直至当前应用为桌面
toast("well done");
img.recycle()
temp.recycle()
openAppSetting(getPackageName("手机淘宝"));
text("强行停止").click();
sleep(1000)
text("强行停止").click();
sleep(1000)
back();